home *** CD-ROM | disk | FTP | other *** search
/ CU Amiga Super CD-ROM 14 / CU Amiga Magazine's Super CD-ROM 14 (1997)(EMAP Images)(GB)(Track 1 of 3)[!][issue 1997-09].iso / CUCD / Programming / AMOS / rjkpro_1 / pacman.amos / pacman.amosSourceCode < prev    next >
Encoding:
AMOS Source Code  |  1997-04-02  |  12.0 KB  |  809 lines

  1. '----------------------------------------------------
  2. '                     pacman v1.o  
  3. '----------------------------------------------------
  4. '               keller@vip.cybercity.dk
  5. '                     rune keller  
  6. '                 sporuplundsvej 105 
  7. '                   dk-8472 sporup 
  8. '----------------------------------------------------
  9. '            finished 28/o4/1996 15:o6:57
  10. '----------------------------------------------------  
  11.  
  12. '_MAP(X,Y).... BACKGROUND MAP - WALLS AND STUFF  
  13. '_GOODY(X,Y).. PILLS AND POWERPILLS
  14. '_BOBX(Z)..... X POSITION OF BOB Z (0>14)
  15. '_BOBY(Z)..... Y POSITION OF BOB Z (0>14)
  16. '_OFFSETX(Z).. X OFFSET OF BOB Z IN PIXELS (-7>7)  
  17. '_OFFSETY(Z).. Y OFFSET OF BOB Z IN PIXELS (-7>7)  
  18. '_MOVEX(Z).... X MOVEMENT OF BOB Z (-1/0/1)  
  19. '_MOVEY(Z).... Y MOVEMENT OF BOB Z (-1/0/1)  
  20. '_INFO(Z)..... MISC. INFO ON BOB Z 
  21. '_ADDX(Z)..... X MOVE FOR DIRECTION Z (-1/0/1) 
  22. '_ADDY(Z)..... Y MOVE FOR DIRECTION Z (-1/0/1) 
  23. '_SCAN(Z)..... CONTROLS - SCAN CODE FOR DIRECTION Z
  24. '_SCORE....... PLAYERS SCORE 
  25. '_POINTS...... POINTS TO BE ADDED TO SCORE 
  26. '_LIVES....... LIVES LEFT
  27. '_LEVEL....... CURRENT LEVEL 
  28. '_LEVELS...... TOTAL AMOUNT OF LEVELS
  29. '_SOUND....... SOUND ON/OFF (True/False) 
  30. '_LEFT........ PILLS LEFT ON SCREEN
  31. '_TIMER....... TIME USED ON CURRENT LEVEL - FOR BONUS CALCULCATING 
  32.  
  33.  
  34.  
  35. 'SETTINGS
  36.  
  37. Request Off 
  38. Led Off 
  39.  
  40.  
  41.  
  42. 'DIMENSION SETUP 
  43.  
  44. Dim _MAP(14,14)
  45. Dim _GOODY(14,14)
  46. Dim _BOBX(3)
  47. Dim _BOBY(3)
  48. Dim _OFFSETX(3)
  49. Dim _OFFSETY(3)
  50. Dim _MOVEX(3)
  51. Dim _MOVEY(3)
  52. Dim _INFO(3)
  53. Dim _ADDX(3)
  54. Dim _ADDY(3)
  55. Dim _SCAN(3)
  56.  
  57.  
  58.  
  59. 'VARIABLE SETUP
  60.  
  61. _SCORE=0
  62. _LIVES=3
  63. _LEVEL=0
  64. _LEVELS=2
  65. _SOUND=True
  66.  
  67. _ADDX(0)=0
  68. _ADDY(0)=-1
  69. _ADDX(1)=0
  70. _ADDY(1)=1
  71. _ADDX(2)=1
  72. _ADDY(2)=0
  73. _ADDX(3)=-1
  74. _ADDY(3)=0
  75.  
  76. _SCAN(0)=76
  77. _SCAN(1)=77
  78. _SCAN(2)=78
  79. _SCAN(3)=79
  80.  
  81.  
  82.  
  83. 'GO TO NEW LEVEL 
  84.  
  85. _NEWLEVEL:
  86.  
  87.  
  88.  
  89. 'RESET VARIABLES 
  90.  
  91. _LEFT=0
  92. _TIMER=0
  93.  
  94.  
  95.  
  96. 'READ DATA FROM LABEL (_LEVEL) 
  97.  
  98. Restore Val(Str$(_LEVEL mod _LEVELS))
  99.  
  100.  
  101.  
  102. 'REPEAT X AND Y
  103.  
  104. For Y=0 To 14
  105.    For X=0 To 14
  106.       
  107.  
  108.  
  109.       'READ DATA 
  110.  
  111.       Read _MAP(X,Y)
  112.       
  113.  
  114.  
  115.       'CHECK IF THERE IS NO WALLS OR STUFF 
  116.  
  117.       If _MAP(X,Y)=0
  118.          
  119.  
  120.  
  121.          'INSERT POWERPILL IN CORNERS 
  122.  
  123.          If X=1 and Y=1 or X=13 and Y=1 or X=1 and Y=13 or X=13 and Y=13
  124.             _GOODY(X,Y)=2
  125.             
  126.  
  127.  
  128.             'ELSE INSERT PILL  
  129.  
  130.          Else 
  131.             _GOODY(X,Y)=1
  132.             Inc _LEFT
  133.          End If 
  134.       End If 
  135.    Next 
  136. Next 
  137.  
  138.  
  139.  
  140. 'RESTART ON CURRENT LEVEL
  141.  
  142. _LEVEL:
  143.  
  144.  
  145.  
  146. 'RESET VARIABLES 
  147.  
  148. _POWERPLAY=0
  149.  
  150. For _OBJECT=0 To 3
  151.    _OFFSETX(_OBJECT)=0
  152.    _OFFSETY(_OBJECT)=0
  153.    _MOVEX(_OBJECT)=0
  154.    _MOVEY(_OBJECT)=0
  155.    _INFO(_OBJECT)=0
  156. Next 
  157.  
  158. _BOBX(0)=7
  159. _BOBY(0)=13
  160.  
  161. For _OBJECT=1 To 3
  162.    _BOBX(_OBJECT)=7
  163.    _BOBY(_OBJECT)=2
  164. Next 
  165.  
  166.  
  167.  
  168. 'OPEN A SCREEN 
  169.  
  170. Screen Open 0,320,256,16,Lowres
  171. Get Sprite Palette 
  172. Flash Off 
  173. Curs Off 
  174. Hide 
  175. Cls 0
  176. Update Off 
  177.  
  178.  
  179.  
  180. 'REPEAT X AND Y
  181.  
  182. For Y=0 To 14
  183.    For X=0 To 14
  184.       
  185.  
  186.  
  187.       'DRAW MAP
  188.  
  189.       If _MAP(X,Y)>0
  190.          Paste Icon 100+X*8,68+Y*8,_MAP(X,Y)
  191.       End If 
  192.  
  193.  
  194.       
  195.       'DRAW GOODIES
  196.  
  197.       If _GOODY(X,Y)>0
  198.          Paste Bob 100+X*8,68+Y*8,33+_GOODY(X,Y)
  199.       End If 
  200.    Next 
  201. Next 
  202.  
  203.  
  204.  
  205. 'UPDATE SCORE
  206.  
  207. Gosub _SCORE
  208.  
  209.  
  210.  
  211. 'UPDATE TIMER
  212.  
  213. Timer=_TIMER
  214.  
  215. _OBJECT=0
  216. Gosub _NEWAREA
  217.  
  218.  
  219.  
  220. 'MAIN LOOP 
  221.  
  222. Do 
  223.    
  224.  
  225.  
  226.    'CHECK IF PLAYER IS POSITION TO MOVE 
  227.  
  228.    If _OFFSETX(0) mod 8=0 and _OFFSETY(0) mod 8=0
  229.       
  230.  
  231.  
  232.       'REPEAT DIRECTIONS 
  233.  
  234.       For _DIRECTION=0 To 3
  235.          
  236.  
  237.  
  238.          'CHECK IF KEY IS PRESSED 
  239.  
  240.          If Key State(_SCAN(_DIRECTION))=True
  241.             
  242.  
  243.  
  244.             'CHECK IF PLAYER CAN MOVE IN THAT DIRECTION  
  245.  
  246.             If _MAP(_BOBX(0)+_ADDX(_DIRECTION),_BOBY(0)+_ADDY(_DIRECTION))=0
  247.                
  248.  
  249.  
  250.                'MOVE PLAYER 
  251.  
  252.                _MOVEX(0)=_ADDX(_DIRECTION)
  253.                _MOVEY(0)=_ADDY(_DIRECTION)
  254.             End If 
  255.          End If 
  256.       Next 
  257.    End If 
  258.  
  259.  
  260.    
  261.    'REPEAT GHOSTS 
  262.  
  263.    For _OBJECT=1 To 3
  264.       
  265.  
  266.  
  267.       'CHECK IF GHOST IS IN POSITION TO MOVE 
  268.  
  269.       If _OFFSETX(_OBJECT) mod 8=0 and _OFFSETY(_OBJECT) mod 8=0
  270.          
  271.  
  272.  
  273.          'GET A RANDOM DIRECTION
  274.  
  275.          _DIRECTION=Rnd(3)
  276.          
  277.  
  278.  
  279.          'CHECK GHOST ISN'T TURNING AROUND
  280.  
  281.          If _ADDX(_DIRECTION)=0 or _MOVEX(_OBJECT)=0
  282.             If _ADDY(_DIRECTION)=0 or _MOVEY(_OBJECT)=0
  283.                
  284.  
  285.  
  286.                'CHECK IF GHOST CAN MOVE IN THAT DIRECTION 
  287.  
  288.                If _MAP(_BOBX(_OBJECT)+_ADDX(_DIRECTION),_BOBY(_OBJECT)+_ADDY(_DIRECTION))=0
  289.                   
  290.  
  291.  
  292.                   'MOVE GHOST
  293.  
  294.                   _MOVEX(_OBJECT)=_ADDX(_DIRECTION)
  295.                   _MOVEY(_OBJECT)=_ADDY(_DIRECTION)
  296.                End If 
  297.             End If 
  298.          End If 
  299.       End If 
  300.    Next 
  301.    
  302.  
  303.  
  304.    'REPEAT BOBS 
  305.  
  306.    For _OBJECT=0 To 3
  307.       
  308.  
  309.  
  310.       'REPEAT DIRECTIONS 
  311.  
  312.       For _DIRECTION=0 To 3
  313.          
  314.  
  315.  
  316.          'CHECK IF CURRENT DIRECTION IS THE RIGHT 
  317.  
  318.          If _MOVEX(_OBJECT)=_ADDX(_DIRECTION) and _MOVEY(_OBJECT)=_ADDY(_DIRECTION)
  319.             
  320.  
  321.  
  322.             'CHECK IF BOB SHOULD MOVE
  323.  
  324.             If _OBJECT=0 or _POWERPLAY=0 or _INFO(_OBJECT)<2 or Timer mod 2=0
  325.                
  326.  
  327.  
  328.                'MOVE BOB
  329.  
  330.                _OFFSETX(_OBJECT)=_OFFSETX(_OBJECT)+_ADDX(_DIRECTION)
  331.                _OFFSETY(_OBJECT)=_OFFSETY(_OBJECT)+_ADDY(_DIRECTION)
  332.             End If 
  333.             
  334.  
  335.  
  336.             'CHECK IF BOB SHOULD ENTER A NEW AREA
  337.  
  338.             If _ADDX(_DIRECTION)<>0 and Abs(_OFFSETX(_OBJECT))=>8 or _ADDY(_DIRECTION)<>0 and Abs(_OFFSETY(_OBJECT))=>8
  339.                
  340.  
  341.  
  342.                'UPDATE VARIABLES
  343.  
  344.                _OFFSETX(_OBJECT)=0
  345.                _OFFSETY(_OBJECT)=0
  346.                _BOBX(_OBJECT)=_BOBX(_OBJECT)+_ADDX(_DIRECTION)
  347.                _BOBY(_OBJECT)=_BOBY(_OBJECT)+_ADDY(_DIRECTION)
  348.                
  349.  
  350.  
  351.                'UPDATE AREA 
  352.  
  353.                Gosub _NEWAREA
  354.                
  355.  
  356.  
  357.                'CHECK IF PLAYER CAN'T GO ANY FURTHER
  358.  
  359.                If _MAP(_BOBX(_OBJECT)+_ADDX(_DIRECTION),_BOBY(_OBJECT)+_ADDY(_DIRECTION))<>0
  360.                   _MOVEX(_OBJECT)=0
  361.                   _MOVEY(_OBJECT)=0
  362.                End If 
  363.             End If 
  364.          End If 
  365.       Next 
  366.    Next 
  367.    
  368.  
  369.  
  370.    'DISPLAY PLAYER BOB
  371.  
  372.    Bob 0,100+_BOBX(0)*8+_OFFSETX(0),68+_BOBY(0)*8+_OFFSETY(0),1+((_MOVEX(0)+1)/2+Abs(_MOVEY(0))*(_MOVEY(0)+5)/2)*6+(Timer/4) mod 6
  373.    
  374.  
  375.  
  376.    'REPEAT GHOSTS 
  377.  
  378.    For _OBJECT=1 To 3
  379.       
  380.  
  381.  
  382.       'CHECK WHICH FRAME TO DISPLAY
  383.  
  384.       If _POWERPLAY>100 and _INFO(_OBJECT)>0 or _POWERPLAY>0 and Timer mod 4<2 and _INFO(_OBJECT)>0
  385.          
  386.  
  387.  
  388.          'CHECK FOR EYE-FRAME 
  389.  
  390.          If _INFO(_OBJECT)=1
  391.             Bob _OBJECT,100+_BOBX(_OBJECT)*8+_OFFSETX(_OBJECT),68+_BOBY(_OBJECT)*8+_OFFSETY(_OBJECT),33
  392.             
  393.  
  394.  
  395.             'CHECK FOR BLUE GHOST-FRAME  
  396.  
  397.          Else If _INFO(_OBJECT)=2
  398.             Bob _OBJECT,100+_BOBX(_OBJECT)*8+_OFFSETX(_OBJECT),68+_BOBY(_OBJECT)*8+_OFFSETY(_OBJECT),31+(Timer/4) mod 2
  399.          End If 
  400.          
  401.  
  402.  
  403.          'CHECK FOR NORMAL GHOST FRAME  
  404.  
  405.       Else 
  406.          Bob _OBJECT,100+_BOBX(_OBJECT)*8+_OFFSETX(_OBJECT),68+_BOBY(_OBJECT)*8+_OFFSETY(_OBJECT),23+_OBJECT*2+(Timer/4) mod 2
  407.       End If 
  408.    Next 
  409.    
  410.  
  411.  
  412.    'UPDATE BOBS 
  413.  
  414.    Bob Draw 
  415.    
  416.  
  417.  
  418.    'CHECK FOR COLLISION BETWEEN PLAYER AND GHOSTS 
  419.  
  420.    If Bob Col(0,1 To 3)
  421.       
  422.  
  423.  
  424.       'GET GHOST IMPLEMENTED IN COLLISION
  425.  
  426.       For _TMPOBJ=1 To 3
  427.          Exit If Col(_TMPOBJ)
  428.       Next 
  429.       
  430.  
  431.  
  432.       'CHECK IF GHOST IS IN NORMAL STATE 
  433.  
  434.       If _POWERPLAY=0 or _INFO(_TMPOBJ)=0
  435.          
  436.  
  437.  
  438.          'PLAYER DIE-SOUND
  439.  
  440.          If _SOUND=True
  441.             Sam Raw %11,Start(6)+6274,2188,8000
  442.          End If 
  443.          
  444.  
  445.  
  446.          'STORE TIMER 
  447.  
  448.          _TIMER=Timer
  449.          
  450.  
  451.  
  452.          'UPDATE LIVES
  453.  
  454.          Dec _LIVES
  455.  
  456.          If _LIVES<0
  457.             Goto _END
  458.          End If 
  459.          
  460.  
  461.  
  462.          'FADE OUT
  463.  
  464.          Wait 30
  465.          Fade 1
  466.          Wait 15
  467.          
  468.  
  469.  
  470.          'RETURN TO START 
  471.  
  472.          Goto _LEVEL
  473.          
  474.  
  475.  
  476.          'CHECK IF PLAYER IS IN BLUE STATE
  477.  
  478.       Else If _INFO(_TMPOBJ)=2
  479.          
  480.  
  481.  
  482.          'GHOST DIE-SOUND 
  483.  
  484.          If _SOUND=True
  485.             Sam Raw %11,Start(6)+2352,3922,8000
  486.          End If 
  487.          
  488.  
  489.  
  490.          'CHANGE GHOST STATE TO EYE 
  491.  
  492.          _INFO(_TMPOBJ)=1
  493.          
  494.  
  495.  
  496.          'CALCULATE POINTS FOR KILLING GHOST
  497.  
  498.          _POINT=200
  499.          For _TMP=1 To 3
  500.             If _INFO(_TMP)<2
  501.                _POINT=_POINT*2
  502.             End If 
  503.          Next 
  504.          
  505.  
  506.  
  507.          'UPDATE SCORE
  508.  
  509.          Gosub _SCORE
  510.       End If 
  511.    End If 
  512.    
  513.  
  514.  
  515.    'CHECK DURATION OF POWER PILL
  516.  
  517.    If _POWERPLAY>0
  518.       Dec _POWERPLAY
  519.       If _POWERPLAY=0
  520.          
  521.  
  522.  
  523.          'RESET GHOSTS TO NORMAL STATE
  524.  
  525.          For _OBJECT=1 To 3
  526.             _INFO(_OBJECT)=0
  527.          Next 
  528.       End If 
  529.    End If 
  530.    
  531.  
  532.  
  533.    'UPDATE BOBS 
  534.  
  535.    Wait Vbl 
  536.    Bob Clear 
  537.    Clear Key 
  538.    
  539.  
  540.  
  541.    'END LOOP
  542.  
  543. Loop 
  544.  
  545.  
  546.  
  547. 'END GAME
  548.  
  549. _END:
  550.  
  551.  
  552.  
  553. 'FADE OUT
  554.  
  555. Fade 1
  556. Wait 15
  557. End 
  558.  
  559.  
  560.  
  561. 'ENTER NEW AREA
  562.  
  563. _NEWAREA:
  564.  
  565.  
  566.  
  567. 'CHECK IF PLAYER IS CURRENT OBJECT 
  568.  
  569. If _OBJECT=0
  570.    
  571.  
  572.  
  573.    'CHECK IF THERE IS A PILL IN NEW AREA
  574.  
  575.    If _GOODY(_BOBX(0),_BOBY(0))=1
  576.       
  577.  
  578.  
  579.       'COLLECT PILL-SOUND
  580.  
  581.       If _SOUND=True
  582.          Sam Raw %1100,Start(6),702,8000
  583.       End If 
  584.       
  585.  
  586.  
  587.       'INCREASE SCORE BY 10
  588.  
  589.       _POINT=10
  590.       Gosub _SCORE
  591.       
  592.  
  593.  
  594.       'UPDATE AREA 
  595.  
  596.       Gosub _CLEANUP
  597.       
  598.  
  599.  
  600.       'DECREASE PILLS LEFT 
  601.  
  602.       Dec _LEFT
  603.       
  604.  
  605.  
  606.       'CHECK IF NO MORE PILLS LEFT 
  607.  
  608.       If _LEFT=0
  609.          
  610.  
  611.  
  612.          'CALCULATE BONUS BY TIME USED
  613.  
  614.          If Timer<1500
  615.             _POINT=3000-Timer*2
  616.          End If 
  617.          
  618.  
  619.  
  620.          'UPDATE SCORE
  621.  
  622.          Gosub _SCORE
  623.          
  624.  
  625.  
  626.          'UPDATE BOBS 
  627.  
  628.          Bob Draw 
  629.          Wait 30
  630.          
  631.  
  632.  
  633.          'INCREASE LEVEL
  634.  
  635.          Inc _LEVEL
  636.          
  637.  
  638.  
  639.          'FADE OUT
  640.  
  641.          Fade 1
  642.          Wait 15
  643.          
  644.  
  645.  
  646.          'RETURN TO NEXT LEVEL
  647.  
  648.          Goto _NEWLEVEL
  649.       End If 
  650.       
  651.  
  652.  
  653.       'CHECK IF THERE IS A POWER PILL IN NEW AREA  
  654.  
  655.    Else If _GOODY(_BOBX(0),_BOBY(0))=2
  656.       
  657.  
  658.  
  659.       'COLLECT POWERPILL-SOUND 
  660.  
  661.       If _SOUND=True
  662.          Sam Raw %11,Start(6)+702,1650,8000
  663.       End If 
  664.       
  665.  
  666.  
  667.       'REPEAT GHOSTS 
  668.  
  669.       For _TMPOBJ=1 To 3
  670.  
  671.  
  672.  
  673.          'CHANGE GHOST STATE TO BLUE, UNLESS ALREADY IN BLUE/EYE STATE
  674.  
  675.          If _INFO(_TMPOBJ)=0
  676.             _INFO(_TMPOBJ)=2
  677.          End If 
  678.       Next 
  679.       
  680.  
  681.  
  682.       'SET POWERPILL DURATION TO 500 
  683.  
  684.       _POWERPLAY=500
  685.       
  686.  
  687.  
  688.       'UPDATE AREA 
  689.  
  690.       Gosub _CLEANUP
  691.    End If 
  692.    
  693.  
  694.  
  695.    'WIPE GOODIES FROM AREA
  696.  
  697.    _GOODY(_BOBX(0),_BOBY(0))=0
  698.    
  699.  
  700.  
  701.    'CHECK IF CURRENT OBJECT IS A GHOST
  702.  
  703. Else If _OBJECT=>1 and _OBJECT<=3
  704.    
  705.  
  706.  
  707.    'CHECK IF GHOST IS IN RESURRECT POSITION 
  708.  
  709.    If _BOBX(_OBJECT)=7 and _BOBY(_OBJECT)=2 and _INFO(_OBJECT)=1
  710.       
  711.  
  712.  
  713.       'RESURRECT GHOST 
  714.  
  715.       _INFO(_OBJECT)=0
  716.    End If 
  717. End If 
  718.  
  719. Return 
  720.  
  721.  
  722.  
  723. _CLEANUP:
  724.  
  725.  
  726.  
  727. 'KILL GOODY GFX
  728.  
  729. Ink 0
  730. Bar 100+_BOBX(0)*8,68+_BOBY(0)*8 To 106+_BOBX(0)*8,74+_BOBY(0)*8
  731.  
  732. Return 
  733.  
  734.  
  735.  
  736. _SCORE:
  737.  
  738.  
  739.  
  740. 'CHECK IF EXTRA LIFE SHOULD BE AWARDED 
  741.  
  742. If(_SCORE+_POINT)/10000>_SCORE/10000
  743.    
  744.  
  745.  
  746.    'EXTRA LIFE-SOUND
  747.  
  748.    If _SOUND=True
  749.       Sam Raw %11,Start(6)+8462,2882,8000
  750.    End If 
  751.    
  752.  
  753.  
  754.    'INCREASE LIVES
  755.  
  756.    Inc _LIVES
  757. End If 
  758.  
  759.  
  760.  
  761. 'INCREASE SCORE BY POINT 
  762.  
  763. _SCORE=_SCORE+_POINT
  764. _POINT=0
  765.  
  766.  
  767.  
  768. 'PRINT SCORE TO SCREEN 
  769.  
  770. Ink 1,0
  771. Text 100,198,Right$("00"+Str$(_LIVES)-" ",2)+" "+Right$("000000000"+Str$(_SCORE)-" ",9)+" "+Right$("00"+Str$(_LEVEL)-" ",2)
  772.  
  773. Return 
  774.  
  775.  
  776.  
  777. 0
  778. Data 1,2,2,2,2,2,2,2,2,2,2,2,2,2,3
  779. Data 4,0,0,0,0,0,0,0,0,0,0,0,0,0,4
  780. Data 4,0,2,2,2,2,3,0,1,2,2,2,2,0,4
  781. Data 4,0,0,0,0,0,11,2,8,0,0,0,0,0,4
  782. Data 4,0,1,2,2,0,4,0,4,0,2,2,3,0,4
  783. Data 4,0,4,0,0,0,4,0,4,0,0,0,4,0,4
  784. Data 4,0,5,2,2,2,6,0,5,2,2,2,6,0,4
  785. Data 4,0,0,0,0,0,0,0,0,0,0,0,0,0,4
  786. Data 4,0,1,2,2,2,3,0,1,2,2,2,3,0,4
  787. Data 4,0,4,0,0,0,4,0,4,0,0,0,4,0,4
  788. Data 4,0,5,2,2,0,4,0,4,0,2,2,6,0,4
  789. Data 4,0,0,0,0,0,4,0,4,0,0,0,0,0,4
  790. Data 4,0,2,2,2,2,6,0,5,2,2,2,2,0,4
  791. Data 4,0,0,0,0,0,0,0,0,0,0,0,0,0,4
  792. Data 5,2,2,2,2,2,2,2,2,2,2,2,2,2,6
  793.  
  794. 1
  795. Data 1,2,2,2,2,2,2,2,2,2,2,2,2,2,3
  796. Data 4,0,0,0,0,0,0,0,0,0,0,0,0,0,4
  797. Data 4,0,4,0,1,2,3,0,1,2,3,0,4,0,4
  798. Data 4,0,4,0,4,0,5,2,6,0,4,0,4,0,4
  799. Data 4,0,4,0,0,0,0,0,0,0,0,0,4,0,4
  800. Data 4,0,4,0,1,2,2,2,2,2,3,0,4,0,4
  801. Data 4,0,4,0,4,0,0,0,0,0,4,0,4,0,4
  802. Data 4,0,0,0,4,0,2,10,2,0,4,0,0,0,4
  803. Data 4,0,2,2,6,0,0,4,0,0,5,2,2,0,4
  804. Data 4,0,0,0,0,0,0,4,0,0,0,0,0,0,4
  805. Data 4,0,2,3,0,4,0,4,0,4,0,1,2,0,4
  806. Data 4,0,0,4,0,4,0,4,0,4,0,4,0,0,4
  807. Data 4,0,1,6,0,4,0,4,0,4,0,5,3,0,4
  808. Data 4,0,4,0,0,4,0,0,0,4,0,0,4,0,4
  809. Data 5,2,7,2,2,7,2,2,2,7,2,2,7,2,6